// 方法装饰器也是一个函数，该函数需要两个参数：
// 1. 如果使静态方法, 则为类本身；如果使实例属性，则为类的原型
// 2. 固定为一个字符串，表示方法名
// 3. 描述符对象
function enumerable(target: any, key: string, descriptor: PropertyDescriptor) {
  // console.log(target, key, descriptor);
  descriptor.enumerable = true;
}

function useless(target: any, key: string, descriptor: PropertyDescriptor) {
  descriptor.value = function () {
    console.log("该方法已过期");
  };
}

class A {
  @enumerable
  @useless
  method1() {
    console.log("method1");
  }

  @enumerable
  method2() {}
}

/* const a = new A();
for (const key in a) {
  console.log(key);
}
 */

export {};
